from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import XinYuWIT.SparkApi
import json
from django.shortcuts import render

# 密钥配置（建议放在settings.py中）
appid = "26acc7ba"
api_secret = "MjZhNmNhNjAwNjMxZmIxMTA2ZGEyNjE4"
api_key = "0548d3486c1404c1a12120e109e92099"
domain = "lite"
Spark_url = "wss://spark-api.xf-yun.com/v1.1/chat"

# 对话历史（生产环境应该使用数据库）
conversation_history = [
    {"role": "system",
     "content": "你是一位专业的心理治疗师，你的目标是通过积极倾听、表达理解和提供支持来帮助用户处理他们的情绪和问题。请始终保持同情心和专业性，并避免给出任何可能引起不适的建议"}
]


def checklen(text):
    while sum(len(content["content"]) for content in text) > 8000:
        del text[1]  # 保留system提示词，删除最早的用户/助手对话
    return text


@csrf_exempt  # 临时禁用CSRF保护，生产环境应该使用更安全的方式
def chat_api(request):
    global conversation_history



    user_message = request.POST.get('message')
    try:
        print(request.body)
        data = json.loads(request.body)
        user_input = data.get('message')
    except json.JSONDecodeError:
        return JsonResponse({'error': 'Invalid JSON'}, status=400)

    if not user_input:
        return JsonResponse({'error': 'Empty message'}, status=400)

    # 添加用户消息到历史
    conversation_history.append({"role": "user", "content": user_input})

    # 调用星火API
    SparkApi.answer = ""
    try:
        SparkApi.main(appid, api_key, api_secret, Spark_url, domain, checklen(conversation_history))
        ai_response = SparkApi.answer.strip()
    except Exception as e:
        return JsonResponse({'error': str(e)}, status=500)

    # 添加助手回复到历史
    conversation_history.append({"role": "assistant", "content": ai_response})

    return JsonResponse({'response': ai_response})


def index(request):
    return render(request, 'aichat.html')  # 需要创建对应的模板